import java.util.Arrays;

public class PartitionEqualSubsetSum {
    /**
     * 给你一个 只包含正整数 的 非空 数组 nums 。
     * 请你判断是否可以将这个数组分割成两个子集，使得两个子集的元素和相等。
     * @param nums
     * @return
     */
    public static boolean canPartition(int[] nums) {
        if (nums.length==1)
            return false;
        Arrays.sort(nums);
        int first =0;
        int last = nums.length-1;
        int sum =0;
        sum += nums[first]-nums[last];
        while (last-first!=1){
            if (sum>=0)
            {
                last--;
                sum -= nums[last];
            }
            else
            {
                first++;
                sum += nums[first];
            }


        }
        if (sum==0)
            return true;
        else
            return false;


    }

    public static void main(String[] args) {
        int[] nums = {2,2,1,1};
        canPartition(nums);
    }
}
